/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Vehiculo;

import BESA.Kernell.Agent.StateBESA;
import java.util.List;
import mundo.Malla;
import mundo.Punto;

/**
 *
 * @author Andres
 */
public class EstadoVehiculo extends  StateBESA{
    
    private Punto Origen;
    private Punto Destino;
    private Punto DestinoInVia=null;
    private Punto Ubicacion;
    public String Nombre;
    public boolean invisible=false;
    
    public EstadoVehiculo(Punto origen, Punto destino ) {
        this.Origen = origen;
        this.Destino = destino;
        this.Ubicacion = new Punto(this.getOrigen().getX(), this.getOrigen().getY());
    }

    /**
     * @return the Origen
     */
    public Punto getOrigen() {
        return Origen;
    }

    /**
     * @return the Destino
     */
    public Punto getDestino() {
        return Destino;
    }
    public void setDestino(Punto Destino) {
        this.Destino=Destino;
    }
    /**
     * @return the Destino
     */
    public Punto getDestinoInVia() {
        return DestinoInVia;
    }
    public void SetDestinoInVia(Malla malla) {
        List<Punto> puntos=malla.getListaPuntos();
        double disMax=Double.MAX_VALUE;
        for(Punto p: puntos){
            double temp=Destino.Distancia(p);
            //System.out.println(p+"@->"+temp);
            if(disMax>temp){
                disMax=temp;
                DestinoInVia=p;
            }
        }
        Punto temp=new Punto(Destino.getX(),Destino.getY());
        Destino=DestinoInVia;
        DestinoInVia=temp;
        System.out.println(Destino);
        
    }
    /**
     * @return the Ubicacion
     */
    public Punto getUbicacion() {
        return Ubicacion;
    }

    /**
     * @param Ubicacion the Ubicacion to set
     */
    public void setUbicacion(Punto Ubicacion) {
        this.Ubicacion = Ubicacion;
    }

    @Override
    public String toString() {
        return "Ubicacion("+getUbicacion()+") Destino("+getDestino()+") DestinoInVia("+getDestinoInVia()+")"+"Distancia destinoInVia->"+Ubicacion.Distancia(getDestinoInVia());
    }

    public boolean heLLegado() {
        if(!invisible){
            if(this.DestinoInVia.equals(this.Ubicacion)){
                invisible=true;
            }
        }
        return invisible;
    }
    
    
    

}
